#pragma once
#include <iostream>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
// 网络地址和主机地址之间进行转换的类

class InetAddr
{
public:
//我们在创建这个对象的时候他会自动将我们的网络地址结构体中的ip和端口转换为对应的形式
    InetAddr(struct sockaddr_in &addr)
        : _addr(addr)
    {
        // 客户端的信息是保存在peer中的，我们可以打印出来看看
        _port = ntohs(_addr.sin_port);           // 从网络中拿到的客户端的端口，属于网络序列，我们需要转换为主机系列
        _ip = inet_ntoa(_addr.sin_addr); // 4字节的网络风格的ip地址，我们要转换为点分十进制字符串风格的形式
    }
    uint16_t Port()
    {
        return _port;
    }
    std::string Ip()
    {
        return _ip;
    }
    ~InetAddr()
    {}
    

private:
    struct sockaddr_in _addr; // 网络地址结构体
    std::string _ip;          // 网络地址
    uint16_t _port;           // 端口号
};